package cn.iocoder.yudao.module.erp.controller.admin.report.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 贵金属盈亏分析响应 VO
 */
@Schema(description = "管理后台 - 贵金属盈亏分析响应 VO")
@Data
public class ErpProfitAnalysisRespVO {

    @Schema(description = "销售收入(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal saleIncome;

    @Schema(description = "回收成本(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal recycleCost;

    @Schema(description = "兑换收益(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal exchangeProfit;

    @Schema(description = "总利润(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal totalProfit;

    @Schema(description = "利润率(%)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal profitMargin;

    @Schema(description = "各金属类型盈亏明细", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<MetalTypeProfitDetailVO> metalTypeDetails;

    /**
     * 金属类型盈亏明细 VO
     */
    @Schema(description = "金属类型盈亏明细")
    @Data
    public static class MetalTypeProfitDetailVO {

        @Schema(description = "贵金属类型", requiredMode = Schema.RequiredMode.REQUIRED)
        private Integer metalType;

        @Schema(description = "贵金属类型名称", requiredMode = Schema.RequiredMode.REQUIRED)
        private String metalTypeName;

        @Schema(description = "销售收入(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal saleIncome;

        @Schema(description = "回收成本(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal recycleCost;

        @Schema(description = "兑换收益(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal exchangeProfit;

        @Schema(description = "利润(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal profit;

        @Schema(description = "利润率(%)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal profitMargin;
    }
} 